【人工智能】八皇后问题-启发式求解

摘要

八皇后问题是回溯算法的典型案例,在回溯法中,常常是盲目搜索,耗费过多的搜索时间。在本次实验中,使用了启发式搜索,搜索时不是任取一个分支,而是选择最佳的分支往下搜索。通过定义状态空间、操作规则、搜索策略,我们可以清晰快速地得到原问题的一个解。

导言

八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。通过计算机编程,我们可以快速地求出问题的解。

实验过程

状态空间

(i,C[i]), i = 0,1,…,7;
(i,C[i])表示第i行的皇后放置在第C[i]列。
初始状态为C[i] = -1, i = 0,1,…,7;表示所有行都不放置皇后。
目标状态为C[i] != -1, i = 0,1,…,7;表示所有行都已经放置了皇后。

操作规则

第一个皇后放在第一行;
第二个皇后放在第二行且不与第一个皇后在同一列或对角线的空格上;
……
第i个皇后放在第i行且不与前面i-1个皇后在同一列或对角线的空格上。

搜索策略

    由于在某一步放置某个皇后时,可能有多个空格可以使用,所以定义启发式函数:

        fx = 剩下未放行中能够用来放皇后的空格数

    如果第i行的皇后放在第j列合法,计算启发式函数的值fx(i,j)。计算出第
  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值